package _03_ArrayUse;
/**
 * 选择排序
 * 
 * 1.每次都把当中最小的放到最左边
 * 
 * 2.先拿出第一个元素,假设这个元素是最小的元素,然后挨个和后面所有比较
 * 全部比较完之后,如果有比第一个小的,就交换位置,把这个最小的放到第一位
 * 
 * 3.交换需要临时变量
 * @author lenovo
 * @Date 2020年7月1日
 * @Time 下午10:05:11
 */
public class Array_07 {

	public static void main(String[] args) {
		int[] arr = { 1, 3, 4, 5, 2 };
		selectSort(arr);
		// m1(arr);
		for (int i : arr) {
			System.out.println(i);
		}
	}

	public static void m1(int[] arr) {
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length; j++) {
				if (arr[i] > arr[j]) {
					int tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
				}
			}
		}
	}

	public static void selectSort(int[] arr) {
		// 从小到大排序
		for (int i = 0; i < arr.length - 1; i++) {
			// 最小元素的下标,默认是第一个元素
			int min = i;
			for (int j = i + 1; j < arr.length; j++) {
				// 如果 min 大于 j 说明 i 不是最小的元素
				// 就交换下标
				if (arr[min] > arr[j]) {
					min = j;
				}
			}
			// 如果min不等于 i 说明最小值不是 i 需要换位
			if (min != i) {
				int temp = arr[i];
				arr[i] = arr[min];
				arr[min] = temp;
			}
		}
	}
}
